<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
		<head>
			<!-- template designed by Marco Von Ballmoos  -->
			<title>Overview</title>
			<link rel="stylesheet" href="../media/stylesheet.css" />
						<script src="../media/lib/classTree.js"></script>
												<script language="javascript" type="text/javascript">
				var imgPlus = new Image();
				var imgMinus = new Image();
				imgPlus.src = "../media/images/plus.png";
				imgMinus.src = "../media/images/minus.png";
				
				function showNode(Node){
							switch(navigator.family){
								case 'nn4':
									// Nav 4.x code fork...
							var oTable = document.layers["span" + Node];
							var oImg = document.layers["img" + Node];
									break;
								case 'ie4':
									// IE 4/5 code fork...
							var oTable = document.all["span" + Node];
							var oImg = document.all["img" + Node];
									break;
								case 'gecko':
									// Standards Compliant code fork...
							var oTable = document.getElementById("span" + Node);
							var oImg = document.getElementById("img" + Node);
									break;
							}
					oImg.src = imgMinus.src;
					oTable.style.display = "block";
				}
				
				function hideNode(Node){
							switch(navigator.family){
								case 'nn4':
									// Nav 4.x code fork...
							var oTable = document.layers["span" + Node];
							var oImg = document.layers["img" + Node];
									break;
								case 'ie4':
									// IE 4/5 code fork...
							var oTable = document.all["span" + Node];
							var oImg = document.all["img" + Node];
									break;
								case 'gecko':
									// Standards Compliant code fork...
							var oTable = document.getElementById("span" + Node);
							var oImg = document.getElementById("img" + Node);
									break;
							}
					oImg.src = imgPlus.src;
					oTable.style.display = "none";
				}
				
				function nodeIsVisible(Node){
							switch(navigator.family){
								case 'nn4':
									// Nav 4.x code fork...
							var oTable = document.layers["span" + Node];
									break;
								case 'ie4':
									// IE 4/5 code fork...
							var oTable = document.all["span" + Node];
									break;
								case 'gecko':
									// Standards Compliant code fork...
							var oTable = document.getElementById("span" + Node);
									break;
							}
					return (oTable && oTable.style.display == "block");
				}
				
				function toggleNodeVisibility(Node){
					if (nodeIsVisible(Node)){
						hideNode(Node);
					}else{
						showNode(Node);
					}
				}
			</script>
					</head>
		<body>
			<div class="page-body">			
	<table class="tutorial-nav-box">
	<tr>
		<td style="width: 30%">
							<a href="../Nexista/tutorial_action.action.pkg.html"><img src="../media/images/previous_button.png" alt="Previous"></a>
					</td>
		<td style="text-align: center">
					</td>
		<td style="text-align: right; width: 30%">
							<span class="disabled"><img src="../media/images/next_button_disabled.png" alt="Next"></span>
					</td>
	</tr>
	<tr>
		<td style="width: 30%">
							<span class="detail">action</span>
					</td>
		<td style="text-align: center">
					</td>
		<td style="text-align: right; width: 30%">
					</td>
	</tr>
</table>
	
<div><a name=""></a><span><a name="intro"></a><span><a name="intro.overview"></a><h3 class="title">Overview</h3><p>Nexista is an Open Source PHP5/XML/XSLT development toolkit based on the Fusebox concept 
  and designed to build large XML/ XSL based web applications.
It provides a clean, systematic way to handle:</p>
<ul><li><em>Content</em> - information, dynamic content, etc...</li>
  <li><em>Logic</em> - php code, database access, authentication, etc..</li>
  <li><em>Design</em> - site layout, look and feel, user interface, etc...</li>
  <li><em>Flow</em> - Navigation, sub-application logic, sitemappping, etc...</li></ul>
<p>This separation of each areas allows for effective team development, rapid 
  concept prototyping and the use of encapsulated test methodologies.</p>
<p>The development of an application, or website, begins with the creation of 
  a number of special XML definition files are used to delineating the logic and 
  configuration of the application. Once configuration is complete, the build 
  process is activated which renders, or compiles the application from XML into 
  PHP.</p>
<p>To provide XSL the data that it needs, such as the result of database queries, 
  runtime information from validation processes, $_GET/$_POST data, etc... a special 
  class, called Flow, is used. This class provides a unified interface for all 
  processes to get and post data. At XSL transformation time, Flow provides an 
  XML version of this data pool that can be accesses using standard XSLT/XPath 
  functions.</p>
<p>One of the goal of nexista is to provide the backbone of the application such 
  as handling database connections and queries, data validation, 
  etc... without constraing the developers. For example, user authentication and 
  caching logic is created by the developer in whatever manner they prefer and 
  later 'hooked' into Nexista.</p></span>
<span><a name="intro.dev-process"></a><h3 class="title">The development process</h3><p>A basic application will consists of:</p>
<ul><li>The <a href="../Nexista/tutorial_sitemap.pkg.html">sitemap</a> - an xml definition of all modules for the whole site - see</li>
  <li><a href="../Nexista/tutorial_config.pkg.html">Configurations</a> file(s) - xml files defining the desired setup</li>
  <li>A number of module files such as <a href="../Nexista/tutorial_sitemap.xsl.pkg.html">xsl</a> stylesheets, <a href="../Nexista/tutorial_action.pkg.html">action</a> definitions, <a href="../Nexista/tutorial_validator.pkg.html">validator</a> 
    definitions, query.pkg files, <a href="../Nexista/tutorial_sitemap.script.pkg.html">php</a> scripts, etc...</li></ul>
<p>Once the individual modules files are build, the sitemap created and the configuration 
  files adjusted, the application is then build. The build process, handled by 
  the Foundry class, creates a compiled php file from the sitemap definition as 
  well as the necessary file to handle the logic of presenting these files based 
  on request.</p>
<p>A typical build would output:</p>
<ul><li>A <a href="../Nexista/tutorial_config.build.loader.pkg.html">loader</a> file such as index.php which is used as the 'entrance' file for 
    the application.</li>
  <li>A switchbox file which is responsible for returning the proper data based 
    on request</li>
  <li>A number of 'gate' php files, one for each section or 'page' of the sitemap. 
    They are responsible for handling the per request logic and will load the 
    necessary module files such as query.pkg definitions, <a href="../Nexista/tutorial_sitemap.script.pkg.html">php</a> scripts, <a href="../Nexista/tutorial_sitemap.xsl.pkg.html">xsl</a> stylesheets, 
    etc...</li>
  <li>A configuration file based on our preferences.</li></ul></span>

  <span><a name="intro.summary"></a><h3 class="title">Summary</h3><p>The core api of Nexista provides module functionality for all connectivity 
  aspects of a web application. This allows developers to not only effectively 
  separate the design and content from logic, but to further divide the logic 
  aspect into discrete logic modules whose expected functionality is clearly delineated. 
  Creating the sitemap as a prototype of the application allows module developers 
  to clearly understand all incoming and outgoing connection from the module, 
  thereby providing a structured framework for their development.</p>
<p>Nexista aims to provide a development methodology as well as a solid framework 
  for the deployment of large web applications. It strives to cover the core functionality 
  necessary to build complex applications while remaining flexible for developers 
  as well as remain maneagable for large development groups.</p>
<p>Nexista was built with development speed and ease foremost in mind. We took 
  what we felt were the best aspects of of the Apache Cocoon project, 
  the Fusebox methodology and the Zope object model to 
  create an extensible and scalable development platform for the PHP community.</p></span></span></div>

	<table class="tutorial-nav-box">
	<tr>
		<td style="width: 30%">
							<a href="../Nexista/tutorial_action.action.pkg.html"><img src="../media/images/previous_button.png" alt="Previous"></a>
					</td>
		<td style="text-align: center">
					</td>
		<td style="text-align: right; width: 30%">
							<span class="disabled"><img src="../media/images/next_button_disabled.png" alt="Next"></span>
					</td>
	</tr>
	<tr>
		<td style="width: 30%">
							<span class="detail">action</span>
					</td>
		<td style="text-align: center">
					</td>
		<td style="text-align: right; width: 30%">
					</td>
	</tr>
</table>
	
	<p class="notes" id="credit">
		Documentation generated on Wed, 03 May 2006 13:48:44 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
	</p>
	</div></body>
</html>